package net.yb.view;

import net.yb.entity.Student;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 启动类
 */
public class Start {
    private static int id = 110001;
    // 创建一个Scanner，用于输入数据
    static Scanner input = new Scanner(System.in);
    // 定义一个集合，用于保存多个学生信息
    static List<Student> students = new ArrayList<>();

    public static void main(String[] args) {
        System.out.println("=================欢迎来到学生管理系统=================");
        while(true){
            System.out.println("--------------------");
            System.out.println("1. 添加学生");
            System.out.println("2. 删除学生");
            System.out.println("3. 修改学生");
            System.out.println("4. 查询学生");
            System.out.println("5. 列出所有学生");
            System.out.print("请选择：");
            int choice = input.nextInt();
            switch (choice){
                case 1:
                    addStudent();
                    break;
                case 2:
                    deleteStudent();
                    break;
                case 3:
                    modifyStudent();
                    break;
                case 4:
                    queryStudent();
                    break;
                case 5:
                    listStudent();
                    break;
                default:
                    System.out.println("输入错误！");
                    break;
            }
        }
    }

    /**
     * 列出所有学生
     */
    private static void listStudent() {
        System.out.println("----------学生信息如下------------");
        System.out.println("学号\t\t姓名\t\t性别\t\t年龄\t\t身高");
        students.forEach(stu -> {
            System.out.println(stu.getId() + "\t\t" + stu.getName() + "\t\t" + stu.getSex() + "\t\t" + stu.getAge() + "\t\t" + stu.getHeight());
        });
    }

    /**
     * 查询学生
     */
    private static void queryStudent() {
        System.out.print("请输入要查询学生的姓名：");
        String name = input.next();
        boolean flag = false;
        for (Student stu : students){
            if (stu.getName().equals(name)){
                System.out.println("学号：" + stu.getId() + "\t\t" + "姓名：" + stu.getName() + "\t\t" + "性别：" + stu.getSex() + "\t\t" + "年龄：" + stu.getAge() + "\t\t" + "身高：" + stu.getHeight());
                flag = true;
            }
        }
        if (!flag){
            System.out.println("未找到姓名为：" + name +"的学生！");
        }
    }

    /**
     * 修改学生
     */
    private static void modifyStudent() {
        System.out.print("请输入要修改学生的学号：");
        int id = input.nextInt();
        if(isExist(id)){
            Student stu = queryById(id);
            System.out.print("请输入姓名：");
            stu.setName(input.next());
            System.out.print("请输入性别：");
            stu.setSex(input.next());
            System.out.print("请输入年龄：");
            stu.setAge(input.nextInt());
            System.out.print("请输入身高：");
            stu.setHeight(input.nextDouble());
            System.out.println("修改成功！");
        }else{
            System.out.println("未找到学号为" + id + "的学生！");
        }
    }

    /**
     * 删除学生
     */
    private static void deleteStudent() {
        System.out.print("请输入要删除学生的学号：");
        int id = input.nextInt();
        // 判断是否存在
        if(isExist(id)){
            Student stu = queryById(id);
            students.remove(stu);
            System.out.println("删除成功！");
        }else{
            System.out.println("未找到学号为" + id + "的学生！");
        }
    }

    /**
     * 添加学生
     */
    private static void addStudent() {
        Student stu = new Student();
        stu.setId(id++); // 为学生生成学号
        System.out.print("请输入姓名：");
        stu.setName(input.next());
        System.out.print("请输入性别：");
        stu.setSex(input.next());
        System.out.print("请输入年龄：");
        stu.setAge(input.nextInt());
        System.out.print("请输入身高：");
        stu.setHeight(input.nextDouble());
        students.add(stu); // 向集合中添加学生
        System.out.println("添加成功！");
    }

    /**
     * 判断是否存在指定的学生
     */
    private static boolean isExist(int id) {
        for(Student stu : students){
            if (stu.getId() == id){
                return true; // 已找到
            }
        }
        return false; // 未找到
    }

    /**
     * 根据学号查询学生
     */
    private static Student queryById(int id){
        for(Student stu : students){
            if (stu.getId() == id){
                return stu; // 已找到
            }
        }
        return null;
    }
}
